package abstract_;

/**
 * @description:
 * @Author yyp
 * @time
 */
public class TestTemplate {
    public static void main(String[] args) {
        TestTemplateA a = new TestTemplateA();
        a.calculateTime();//这里还是需要有良好的 OOP 基础，对多态
        TestTemplateB b = new TestTemplateB();
        b.calculateTime();
    }
}

class TestTemplateA extends job{
    //计算任务
    Long l = 0L;
    @Override
    public void job() {
        for (int i = 0; i < 100000; i++) {
            l = l+i;
        }
        long end = System.currentTimeMillis();
    }
}

class TestTemplateB extends job{
    //计算任务
    Long l = 0L;
    @Override
    public void job() {
        for (int i = 0; i < 100000; i++) {
            l = l-i;
        }
        long end = System.currentTimeMillis();
    }
}

abstract class job{
    public abstract void job();//抽象方法
    public void calculateTime() {
        //实现方法，调用 job 方法
        // 得到开始的时间
        long start = System.currentTimeMillis();
        job();
        //动态绑定机制
        // 得的结束的时间
        long end = System.currentTimeMillis();
        System.out.println("任务执行时间 " + (end - start));
    }
}
